// 阿里云oss云存储服务工具文件
import path from "path"
import OSS from "ali-oss"
class aliOss {
  // 初始化实例
  ossInit() {
    const client = new OSS({
      // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      // yourRegion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
      region: "oss-cn-beijing",
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: "dsjmage",
    })
    return client
  }
  //  上传文件
  async upload(filename, buffer) {
    const client = this.ossInit()
    // 设置上传文件请求头
    const headers = {
      // 指定Object的存储类型。
      "x-oss-storage-class": "Standard",
      // 指定Object的访问权限。
      // public-read（公共读私有写）和 public-read-write（公共读写）
      "x-oss-object-acl": "public-read",
      // 通过文件URL访问文件时，指定以附件形式下载文件，下载后的文件名称定义为example.txt。
      "Content-Disposition": `attachment; filename="${filename}"`,
      // 设置Object的标签，可同时设置多个标签。
      "x-oss-tagging": "Tag1=1&Tag2=2",
      // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
      "x-oss-forbid-overwrite": "true",
    }
    try {
      const res = await client.put(
        `dsj_uploads/${filename}`, buffer,
        { headers }
      )
      // console.log(res)
      return res.url
    } catch (error) {
      console.log(error)
      return '存入阿里云oss错误'
    }
  }
}
const oss = new aliOss()
export default oss
